package com.second.client.controller;

import com.second.client.pojo.entity.ClientLevel;
import com.second.client.pojo.vo.ChangeLevelStatusVo;
import com.second.client.pojo.vo.PageVo;
import com.second.client.service.ClientLevelService;
import com.second.common.pojo.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * (ClientLevel)表控制层
 *
 * @author makejava
 * @since 2021-07-23 14:52:28
 */
@RestController
@Api(tags = "会员等级控制层")
@RequestMapping("level")
public class ClientLevelController{

    /**
     * 服务对象
     */
    @Resource
    private ClientLevelService clientLevelService;

    /**
     * 查询所有会员等级信息
     * @param pageVo 分页工具类
     * @param levelId 等级id
     * @return 所有数据
     */
    @PostMapping("getAllLevel")
    @ApiOperation(value = "查询所有会员等级信息")
    public R getAllLevel(PageVo pageVo, Integer levelId) {
        return clientLevelService.getAllLevel(pageVo,levelId);
    }

    /**
     * 根据等级Id，改变评论特权
     * @param changeLevelStatusVo 特权
     * @return 修改结果
     */
    @PutMapping("changePriviledgeComment")
    @ApiOperation(value = "改变评论特权")
    public R changePriviledgeComment(ChangeLevelStatusVo changeLevelStatusVo) {
        return clientLevelService.changePriviledgeComment(changeLevelStatusVo);
    }

    /**
     * 根据等级Id，改变活动特权
     * @param changeLevelStatusVo 特权
     * @return 修改结果
     */
    @PutMapping("changePriviledgePromotion")
    @ApiOperation(value = "改变活动特权")
    public R changePriviledgePromotion(ChangeLevelStatusVo changeLevelStatusVo) {
        return clientLevelService.changePriviledgePromotion(changeLevelStatusVo);
    }

    /**
     * 根据等级Id，改变价格特权
     * @param changeLevelStatusVo 特权
     * @return 修改结果
     */
    @PutMapping("changePriviledgeMemberPricen")
    @ApiOperation(value = "改变价格特权")
    public R changePriviledgeMemberPricen(ChangeLevelStatusVo changeLevelStatusVo) {
        return clientLevelService.changePriviledgeMemberPricen(changeLevelStatusVo);
    }

    /**
     * 根据等级Id，改变生日特权
     * @param changeLevelStatusVo 特权
     * @return 修改结果
     */
    @PutMapping("changePriviledgeBirthday")
    @ApiOperation(value = "改变生日特权")
    public R changePriviledgeBirthday(ChangeLevelStatusVo changeLevelStatusVo) {
        return clientLevelService.changePriviledgeBirthday(changeLevelStatusVo);
    }

    /**
     * 根据id删除等级
     * @param levelId 等级Id
     * @return 删除结果
     */
    @DeleteMapping("deleteLevelById")
    @ApiOperation(value = "根据id删除等级")
    public R deleteLevelById(Integer levelId) {
        return clientLevelService.deleteLevelById(levelId);
    }

    /**
     * 修改/添加等级信息
     * @param clientLevel  等级信息
     * @return  修改结果
     */
    @PutMapping("updateLevel")
    @ApiOperation(value = "修改/添加等级信息")
    public R updateLevel(ClientLevel clientLevel) {
        return clientLevelService.updateLevel(clientLevel);
    }

    /**
     * 获取所有的等级，渲染到下拉菜单
     * @return 所有的等级数据
     */
    @GetMapping("getAll")
    @ApiOperation(value = "获取所有的等级信息")
    public R getAll() {
        return clientLevelService.getAll();
    }

}
